﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Com.AlbLab.GEP.Domain.Entities;
using common.pages;

namespace Com.AlbLab.CR.Web.pages
{
    public partial class PNS_CF0 : common.pages.BasePage
    {
        private PraticaBase pratica;

        public PraticaBase Pratica
        {
            get { return pratica; }
            set { pratica = value; }
        }

        public GEP_DATI_NOSTD PraticaDB
        {
            get
            {
                return (GEP_DATI_NOSTD)pratica.RecordDB;
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            //if (!Page.IsPostBack && common.TempSession.getBag() != null && common.TempSession.getBag().tipo == "CODICE_PRATICA")
            // {
            //currentPraticaId = common.TempSession.getBag().valore.ToString();
            //Pratica = ((InputPratiche.Pratiche.CaricamentoPratiche)Session["ElencoPraticheCarica"]).PraticheDB[int.Parse(currentPraticaId) - 1];
            //causeInamm = BasePage.Services.AnagraficheService.getMotiviInammisibilita();
            //// }
            //bindNew(true);
            int currentPraticaId;
            int KindAccess;

            // memorizza da quale pagina provengo.
            // in modo dapoter tornarci correttamente.
            if (!Page.IsPostBack)
            {
                IntestaSchedaPratica1.SetCallingUrl = new Uri(Request.UrlReferrer.ToString().Replace("KA=1", "KA=2"));
            }

            // **
            // KAP = 1 accesso dalla lista delle pratiche per la visualizzazione del dettaglio
            // KAP = 2 accesso dalla pagina di gestione delle fasi
            // **
            if (!(int.TryParse(Request.QueryString["KAP"], out KindAccess)))
            {
                KindAccess = 2;
            }

            currentPraticaId = int.Parse(common.TempSession.getBag().valore.ToString());
            if (KindAccess == 1)
            {
                Pratica = ((InputPratiche.Pratiche.CaricamentoPratiche)Session["ElencoPraticheCarica"]).PraticheDB[currentPraticaId - 1];
            }
            else
            {
                Pratica = new Com.AlbLab.GEP.Domain.Entities.NonStandard.PNS_CF0_Cambio_fasi();                  //BasePage.Services.PraticaBaseService.getPraticaResponse(currentPraticaId);
                Pratica.RecordDB = (GEP_DATI_NOSTD)Services.GEP_DATINSTService.getPraticaByID(currentPraticaId);
            }
            // **
            // Impostazione della visibilità di alcuni controlli
            // **
            ValidaRichiesta1.Visible = !Pratica.IsSaved;
            DatiDBASM.Visible = Pratica.IsAmmissibile;
            Rr01.Visible = (KindAccess == 2) && (Pratica.IsAmmissibile);// && (((GEP_DATID01)Pratica.RecordDB).Gep_testata.Gep_risposta.Response != null);
            bindNew(true);
        }

        protected override void Page_PreRender(object sender, EventArgs e)
        {
            base.Page_PreRender(sender, e);
        }

        private void bindNew(bool initialize)
        {
            this.DataBind();
        }

        protected void Page_DataBind(object sender, EventArgs e)
        {
            IntestaSchedaPratica1.pratica = this.Pratica;
            DefaultDettaglioPraticheNonStandard1.PraticaDB = (GEP_DATI_NOSTD)this.Pratica.RecordDB;
            if (ValidaRichiesta1.Visible && !Pratica.IsSaved)
            {
                ValidaRichiesta1.CauseInamm = BasePage.Services.AnagraficheService.getMotiviInammisibilita();
                ValidaRichiesta1.pratica = this.Pratica;
            }

            //if (DatiDBASM.Visible)
            //{
            DatiDBASM.PraticaDB = this.Pratica;
            //}

            if (Rr01.Visible && !Page.IsPostBack)
            {
                Rr01.Initialize(this.Pratica);
                Rr01.setdRecord(this.Pratica.GEP_testata.Gep_risposta.Response, this.Pratica.GEP_testata.Tes_Stato > 19);
                Rr01.Visible = true;
                ((LinkButton)Rr01.FindControl("btnSave")).Visible = this.Pratica.GEP_testata.Tes_Stato < 20;
            }
        }

        protected void Response_onSave(object sender, GEP_RISPOSTA e, bool init)
        {

            if (init == false)
                BasePage.Services.PraticaBaseService.UpdateResponse(e);
            else
                BasePage.Services.PraticaBaseService.InsertResponse(e);

            this.Pratica.GEP_testata.Gep_risposta = e;
        }
    }
}